import { getClass, isString, isObject, parseJsonObject } from './types'

// 将json字符串args转换为带有指定key的object
export function StringToObjectWithKey(_args, key) {
  // console.log(_args, key);
  let obj = parseJsonObject(_args)
  if (obj === null) {
    // 返回重新包装后的json对象
    obj = {}
    obj[key] = _args
    return obj
  } else if (!obj.hasOwnProperty(key)) {
    // 如果没有定义key字段，则返回null
    return null
  } else {
    return obj
  }
}

// 将json字符串args转换为带有指定key的object
export function ToObjectWithKey(_args, key) {
  // 如果args本身就是Object，且包含key字段
  // console.log(_args);
  if (isObject(_args) && _args.hasOwnProperty(key)) {
    return _args
  } else if (isString(_args)) {
    // 转换为包含type字段的json对象
    return StringToObjectWithKey(_args, key)
  } else {
    return null
  }
}

// 将json对象args转换为字符串
// 如果args本身是字符串类型,则直接返回
export function JsonObjectToString(_args) {
  const cls = getClass(_args)
  if (cls !== 'Object' && cls !== 'String') {
    console.log('仅支持json对象或字符串类型参数:', _args)
    return ''
  } else if (cls === 'Object') {
    return JSON.stringify(_args)
  } else {
    return _args
  }
}
